/**
 * 商品实体类
 * 业务层级：实体层
 * 功能说明：定义商品的基本属性和操作方法，包括商品信息、价格和分类管理
 * 架构关系：遵循四层架构设计，作为核心业务实体，为商品管理提供数据模型
 */
#ifndef PRODUCT_H
#define PRODUCT_H

#include <QString>
#include <QDateTime>

class Product {
public:
    // 构造函数
    Product();
    Product(int productId, const QString& productName, const QString& specification,
            const QString& color, const QString& supplier, double purchasePrice,
            double sellingPrice, int categoryId, bool allowMemberDiscount,
            const QDateTime& createTime);

    // Getter 方法
    int getProductId() const;
    QString getProductName() const;
    QString getSpecification() const;
    QString getColor() const;
    QString getSupplier() const;
    double getPurchasePrice() const;
    double getSellingPrice() const;
    int getCategoryId() const;
    bool getAllowMemberDiscount() const;
    QDateTime getCreateTime() const;

    // Setter 方法
    void setProductId(int productId);
    void setProductName(const QString& productName);
    void setSpecification(const QString& specification);
    void setColor(const QString& color);
    void setSupplier(const QString& supplier);
    void setPurchasePrice(double purchasePrice);
    void setSellingPrice(double sellingPrice);
    void setCategoryId(int categoryId);
    void setAllowMemberDiscount(bool allowMemberDiscount);
    void setCreateTime(const QDateTime& createTime);

private:
    int productId;              // 商品ID
    QString productName;        // 商品名称
    QString specification;      // 规格
    QString color;              // 颜色
    QString supplier;           // 供应商
    double purchasePrice;       // 采购价
    double sellingPrice;        // 零售价
    int categoryId;            // 类别ID
    bool allowMemberDiscount;   // 是否参与折扣
    QDateTime createTime;       // 创建时间
};

#endif // PRODUCT_H
